package com.dszq.wemedia.controller.v1;

import com.dszq.model.channel.dtos.ChannelDTO;
import com.dszq.model.common.dtos.ResponseResult;
import com.dszq.model.wemedia.pojos.WmChannel;
import com.dszq.wemedia.service.WmChannelService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * [一句话描述该类的功能]
 *
 * @author : [Lenovo]
 * @version : [v1.0]
 * @createTime : [2024/4/18 15:10]
 */
@RestController
@RequestMapping("/api/v1/channel")
public class WmChannelController {
    @Autowired
    private WmChannelService wmChannelService;
    /**
     * 查询所有频道信息
     *
     * @return ResponseResult 返回频道信息的查询结果，封装了状态码和数据
     */
    @GetMapping("/channels")
    public ResponseResult findAll()
    {
        // 调用服务层方法，查询所有频道信息并返回
        return wmChannelService.findAll();
    }
    /**
     * 通过POST请求保存频道信息。
     *
     * @param wmChannel 频道信息对象，包含要保存的所有频道属性。
     * @return 返回操作结果，包括操作是否成功、错误信息等。
     */
    @PostMapping("/save")
    public ResponseResult insert(@RequestBody WmChannel wmChannel){
        // 调用服务层方法，插入频道信息
        return wmChannelService.insert(wmChannel);
    }

    /**
     * 根据频道名称和分页信息，查询频道列表。
     *
     * @param channelDTO 频道数据传输对象，包含频道名称和分页信息。
     * @return 返回频道列表的响应结果。
     */
    @PostMapping("/list")
    public ResponseResult list(@RequestBody ChannelDTO channelDTO){
        // 通过服务查询并返回符合条件的频道列表
        return wmChannelService.listByNameAndPage(channelDTO);
    }

    /**
     * 更新频道信息。
     *
     * @param wmChannel 接收前端传来的频道信息对象，包含频道的详细数据。
     * @return 返回操作结果，成功或失败。
     */
    @PostMapping("/update")
    public ResponseResult update(@RequestBody WmChannel wmChannel)
    {
        // 调用服务层方法，更新频道信息
        return wmChannelService.updateChannel(wmChannel);
    }

    /**
     * 通过频道ID删除记录
     * 只有禁用的频道才能删除
     * @param channelId 频道ID，路径变量
     * @return 返回操作结果，包括成功与否、错误码等信息
     */
    @GetMapping("/del/{id}")
    public ResponseResult deleteById(@PathVariable("id") Integer channelId){
        // 调用服务层方法，根据频道ID删除相应记录
        return wmChannelService.deleteById(channelId);
    }
}
